<?php
/**
 * 入口文件
 *
 * 所有程序调用的入口。
 *
 * @category   Framework
 * @package    __init__
 * @author     Xinze <xinze@live.cn>
 * @copyright  Copyright (c) 2010, 黄新泽
 * @version    1.0
 * @todo
 */
//设置开始的时间
$mtime =  explode(' ',  microtime());
$app_starttime = $mtime[1] + $mtime[0];

//定义系统路径
if(!defined('ROOT_PATH'))
{
    define('ROOT_PATH', str_replace('\\', '/', dirname(__FILE__)));
    define('LIB_PATH', ROOT_PATH . '/libraries');   //ZeroPHP Framework 所在目录
    define('APP_PATH', ROOT_PATH . '/app');         //应用程序目录

    define('MOD_PATH', APP_PATH . '/models');       //应用程序模型目录

    $themes_name = 'default';

    /**
     * 风格静态文件文件目录，此处变量名称$themes勿修改
     *
     * @var string
     */
    if (isset($_SERVER['DOCUMENT_ROOT']) && $_SERVER['DOCUMENT_ROOT'])
    {
        $pro_path_row = explode($_SERVER['DOCUMENT_ROOT'], ROOT_PATH);
        $themes = $pro_path_row[1] . '/app/static/' . $themes_name;
    }
    else
    {
        $themes = '/app/static/' . $themes_name;
    }


    define('TPL_PATH', APP_PATH . '/views/' . $themes_name);  //应用程序视图目录
    define('CTL_PATH', APP_PATH . '/controllers');  //应用程序控制器目录
    define('INI_PATH', APP_PATH . '/configs');      //应用程序配置文件目录

    /*
    define('HLP_PATH', APP_PATH . '/helpers');
    define('LOG_PATH', APP_PATH . '/data/logs');
    define('LAN_PATH', APP_PATH . '/data/locales');
    */

    //是否开启debug，如果为true，则不生成runtime缓存
    define('DEBUG', true);

    /**
     * Friend Url 规则
     *
     * @var string
     */
    $pattern  = ':ctl/:met/:typ/*';
    $rules    = array();
    $defaults = array('ctl'=>'Main_Index', 'met'=>'index', 'typ'=>'e');
}

if (!DEBUG)
{
    /**
     * runtime文件名称
     *
     * @var string
     */
    global $runtime;

    if (isset($_SERVER['PATH_INFO']))
    {
        if (ltrim($_SERVER['PATH_INFO'], '/'))
        {
            $path_info_get = explode('/', ltrim($_SERVER['PATH_INFO'], '/'));
        }

        if (isset($path_info_get[0]))
        {
            $runtime = implode('/', explode('_', $path_info_get[0]));
        }
        else
        {
            $runtime = 'Main/Index';
        }
    }
    else
    {

        if (isset($_REQUEST['ctl']))
        {
            $runtime = implode('/', explode('_', $_REQUEST['ctl']));
        }
        else
        {
            $runtime = 'Main/Index';
        }
    }

    /**
     * runtime文件路径
     *
     * @var string
     */
    $runtime_file = APP_PATH . '/data/runtime/' .  $runtime . '.php';
}


/**
 * 保存加载过的文件，只记录class或者记录按照顺序执行的全局文件。
 *
 * @var array
 */
global $import_file_row;

$import_file_row = array();

/**
 * 计算是否需要从runtime运行， DEBUG状态不生成
 */
if (!DEBUG && file_exists($runtime_file))
{
    include_once $runtime_file;
}
else
{
    array_push($import_file_row, LIB_PATH . '/__init__.php');
    array_push($import_file_row, APP_PATH . '/configs/config.ini.php');

    //初始化Zero
    require_once LIB_PATH . '/__init__.php';

    //引入用户配置文件
    require_once APP_PATH . '/configs/config.ini.php';
}

if (!DEBUG)
{
    Zero_Registry::set('runtime', $runtime);
    Zero_Registry::set('runtime_file', $runtime_file);
}
/*
//插件启动
function get_active_plugins()
{
    return array(
        array('name'=>'Demo'),
        array('name'=>'Xhprof'),
        //array('name'=>'Refresh', 'cli'=>false)
        );
}

$plugin_rows   = get_active_plugins();
$PluginManager = Zero_Plugin_Manager::getInstance($plugin_rows);

*/

/**
 * 允许的控制器所在目录
 *
 * @var array
 */
$controller_dir = array(
    'Main',
    'Map'
);

//程序控制器启动，计算结果
Zero_App::start();

$PluginManager->trigger('end', '');


fb($import_file_row);
fb($import_file_row);

/*
$phpVariable  = array(1,2,3, '发达发'=>'我定定地的地对地导弹的的地对地导弹的的的');
$binaryString = MsgPack_Coder::encode($phpVariable);


file_put_contents(11, $binaryString);

// decode
//print_r($phpVariable);


$phpVariable = MsgPack_Coder::decode(file_get_contents('11'));

print_r($phpVariable);
*/

//$Zero_Registry = Zero_Registry::getInstance();
//$Zero_Registry['sss']['fsdfds'] = 2;

?>